# -*- coding: utf-8 -*-
"""
Created on Tue Sep 17 18:46:19 2024

@author: 焊板子的兔子
"""

"""

一、多行文本编辑控件有QTextEdit和QPlainTextEdit两种
1、QTextEdit是主要用于显示并编辑多行文本的控件，支持富文本，当文本内容超出控件显示范围时，可以显示水平和竖直滚动条。QTextEdit不仅可以用来显示文本，还可以用来显示html文档。
2、QPlainTextEdit是一个多行纯文本编辑器，用于显示和编辑多行纯文本，不支持富文本。

QTextEdit实例化方法：
QTextEdit(parent:QWidget=None)
QTextEdit(text:str,parent:QWidget=None)

QPlainTextEdit实例化方法：
QPlainTextEdit(parent:QWidget=None)
QPlainTextEdit(text:str,parent:QWidget=None)

二、QTextEdit常用信号、方法等
1、textChanged信号：当文本内容发生变化时发送此信号
2、selectionChanged信号：当选择的内容发生变化时发送此信号
3、setText()方法：设置显示的文字
4、QTextCursor类：用于描述文档中的光标，可以获取/设置光标位置，在光标位置插入文本、图像、表格，获取选择内容等
5、QTextCharFormat类：用于描述文本格式
6、QTextImageFormat类：用于描述图像格式

本程序源码以及控件常用信号和方法说明，可在以下仓库中找到 https://gitee.com/xhy_312/Qt-For-Python.git

"""
import sys
from PySide6.QtWidgets import QApplication,QWidget,QPushButton,QTextEdit,QFileDialog,QLineEdit
from PySide6.QtGui import QTextImageFormat
from PySide6.QtCore import QRect,QSize


class myWidget(QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)
        self.setFixedSize(QSize(640,480))#QSize类用于描述尺寸，setFixedSize（）方法用于设置一个固定尺寸窗口
        
        #创建一个TextEdit控件
        self.textEdit = QTextEdit(self)
        self.textEdit.setGeometry(50,50,300,300)
        self.textEdit.setPlaceholderText("这是一个多行文本控件")
        self.textEdit.selectionChanged.connect(self.func1)
        
        #创建一个单行文本控件，用于实时显示textEdit中所选择的文字
        self.lineEdit = QLineEdit(self)
        self.lineEdit.setGeometry(QRect(50,400,200,30))
        
        #创建一个按钮控件，用于打开图像选择文件对话框
        self.btnInsImg = QPushButton(self)
        self.btnInsImg.setGeometry(50,10,100,30)
        self.btnInsImg.setText("插入图片")
        self.btnInsImg.clicked.connect(self.func2)
        
        
        
        
    def func1(self):
        self.lineEdit.setText(self.textEdit.textCursor().selectedText())     
        
        
    def func2(self):
        name,filter = QFileDialog.getOpenFileName(self,"打开文件","","(*.png)")#打开一个文件选择对话框，并返回选中文件的路径
        pic = QTextImageFormat()
        pic.setName(name)#指定引用图像的路径
        textCursor=self.textEdit.textCursor()#获取光标当前位置
        textCursor.insertImage(pic)#在光标位置处插入图片
        
   
                     
     
if __name__ == "__main__":
    app = QApplication.instance()   #一个应用程序实例对象
    if app is None:
        app = QApplication()
    myWindow = myWidget()
    myWindow.show()
    n = app.exec()
    sys.exit(n)